package com.cskaoyan.javase.method._0introduction;

/**
 * @description: 全新版本-使用方法改进案例
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 现在有三个需求：
 * - 编写程序，计算10+20，并输出结果
 * - 编写程序，计算111+222，并输出结果
 * - 编写程序，计算333+444，并输出结果
 *
 * 使用方法改进案例,实现代码的重复使用,减少代码的冗余
 *
 * 1,方法的本质是重复利用代码,代码复用
 * 2,方法的语法:
 *      [修饰符列表] 返回值类型 方法名 (形式参数列表){
 * 	        //方法体
 *      }
 * 解释语法之前,我们先看两个名词:
 *      a,方法的声明: 指的是由 [修饰符列表] 返回值类型 方法名 (形式参数列表) 这整个部分组成的方法的定义
 *          有些地方也叫做"方法头"
 *      b,方法的签名: 指的是由 方法名 (形式参数列表) 组成的这部分
 * 逐一解释各个组成部分:
 *      a,[修饰符列表]: 指的是那些能够修饰方法的关键字组成的部分,限于我们目前学习的进度,没有办法深入讲解
 *          我们现在默认方法的修饰符列表是public static
 *          需要注意的是,修饰符列表不是必须的,完全可以省略,不写
 *      b,返回值类型: 返回值的数据类型(如果有的话)
 *          返回值: 指的是方法执行结束后,方法给出的结果
 *          返回值类型可以是基本数据类型,也可以是引用数据类型
 *      c,方法名: 属于标识符的一种,遵循小驼峰式的书写规范
 *          并且好的方法名,应该见名知意,应该能够让方法的使用者看到名字就知道方法的作用
 *          因为方法是为了实现功能的,所以方法名最好使用一个动词
 *      d,形式参数列表: 由不确定个数的形式参数组成的列表,可能是1个也可能是多个,也完全可能没有.多个形式参数之间用","隔开
 *          形式参数简称"形参"
 *          形式参数: 在调用方法时,有时候需要给方法传入参数,形式参数可以用来告诉方法的调用者,参数的数据类型
 *                  形式参数的名字很重要,因为它会在方法中使用
 *                  以上形式参数的语法应该是"数据类型 + 变量名"
 *      e,方法体: 为了实现方法的功能,对应的语句
 *
 * 3,语法知道后,怎么定义一个方法?在什么位置定义方法?
 *      方法是不能嵌套方法的,方法应该定义在类体中,其他方法之外
 *
 * 4,如果一个方法的返回值类型明确了该方法存在返回值,那么必须在方法体中用"return"关键字指出方法的返回值
 * 语法:
 *      return + 返回值
 *
 *5,方法定义完毕后,必须调用它才会被执行.而main方法是程序的入口方法,所以必须让main方法直接或者间接的去调用它,它才会被执行,不调用不执行
 *
 * 6,如何调用方法?
 *      对于有static修饰的方法,在main方法中可以直接使用方法名去调用它
 *      如果方法明确需要传入参数,那就必须给它传参
 *      在方法调用时,传入的具体参数称之为实际参数
 *      简称实参
 *7.操作方法的调用就相当于操作方法的返回值(前提是有返回值)
 *
 * 8.java类中每个方法是平行关系,位置不影响调用
 *
 *
 */
public class NewDemo {
    //定义一个方法,用来计算两个int数的和
    //Access can be private
    public static int sum(int num1, int num2) {
        //Local variable 'sumValue' is redundant
        //int sumValue = num1 + num2;
        //Missing return statement
        //return sumValue;
        return num1 + num2;
    }

    public static void main(String[] args) {
        //Result of 'NewDemo.sum()' is ignored
        System.out.println(sum(1, 2));
        System.out.println(sum(10, 20) + 100);
    }




}


